/**
 * 
 */
package com.googlecode.pcapj;

import java.net.Inet4Address;

/**
 * Represents a Packet of the IPv4.
 */
public interface IPv4Packet extends Packet{
	/**
	 * Gets the version. For IPv4, this has a value of 4.
	 * @return the version.
	 */
	public int getVersion();
	/**
	 * Gets the Internet Header Length, ), which is the number of 32-bit words in the header. 
	 * @return the Internet Header Length.
	 */
	public int getIHL();
	/**
	 * Gets the Total Length.
	 * @return the Total Length.
	 */
	public int getTotalLength();
	/**
	 * Gets the identification field.
	 * @return the identification field.
	 */
	public short getIdentification();
	/**
	 * Gets the IP protocol number.
	 * @return the IP protocol number.
	 */
	public byte getProtocol();
	/**
	 * Gets the Source IP Address.
	 * @return the Source IP Address. 
	 */
	public Inet4Address getSource();
	/**
	 * Gets the Destination IP Address.
	 * @return the Destination IP Address. 
	 */
	public Inet4Address getDestination();
	/**
	 * Gets the Options field.
	 * @return the Options field.
	 */
	public byte[] getOptions();
	/**
	 * Gets the data field of the IP packet.
	 * @return the data field of the IP packet.
	 */
	public byte[] getData();
	/**
	 * Gets the packet object from the data field of the IP packet.
	 * @return the packet object.
	 */
	public Packet getTransportLayerPacket();
}
